package cz.fabian.android.placeLocator;

final public class Helpers {
	/**
	 * count distance between two lat/lon
	 * 
	 * @param lat1
	 * @param lng1
	 * @param lat2
	 * @param lng2
	 * @return distance in meters
	 */
    public static float distFrom(float lat1, float lng1, float lat2, float lng2) {
        double earthRadius = 3958.75;
        double dLat = Math.toRadians(lat2-lat1);
        double dLng = Math.toRadians(lng2-lng1);
        double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
                   Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
                   Math.sin(dLng/2) * Math.sin(dLng/2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
        double dist = earthRadius * c;

        int meterConversion = 1609;

        return new Float(dist * meterConversion).floatValue();
    }
    
    /**
     * Format distance to human readable string
     * 
     * @param meters
     * @return String distance in meters or kilometers
     */
    public static String formatDistance(Float meters) {
		if (meters < 1000) {
			return meters + " m";
		}
		
		return meters / 1000 + " km";
	}
}
